Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js]Ruchome tło
styryl
post
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

Ostrzeżenie: (0%)
-----


Witam,

Mam takie pytanko jak zrobić aby tło (img) diva się ruszało tzn mamy sobie div o wymiarach powiedzmy 100x100 i w css wrzucamy mu jak tło zdjecie o wymiarach 200x200 i jak teraz zrobić aby płynnie się poruszało te tło;

  1. <div id="tlo>
  2.  
  3.  
  4. </div>
  5.  
  6.  
  7. css:
  8.  
  9.  
  10. #tlo{
  11. width: 100px;
  12. height: 100px;
  13. background: url('img/tlofirma.png') no-repeat;
  14. }
  15.  


prosze o jakis przykład najlepiej z wykorzystaniem jquery.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
calgonit
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.06.2009

Ostrzeżenie: (0%)
-----


Witaj,

Czy mógłbyś postarać się jeszcze raz wyartykułować swoje pytanie? Wybacz ale nie bardzo rozumiem w czym rzecz.
Dlatego pozwolę sobie na luźne skojarzenie i wspomnę plugin związany ze zmieniającą się wielkością tła ,który swojego czasu wydał mi się bardzo sympatyczny...
http://www.aaronvanderzwan.com/maximage/

pozdr

Go to the top of the page
+Quote Post
styryl
post
Post #3





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

Ostrzeżenie: (0%)
-----


sprawa wygląda tak:

jest div o wymiarach 100 px na 100 px, jeżeli w css wstawimy mu tło jako obrazek o wielkości 200 px na 200 px to w divie będzie jedynie wycinek tego tła czyli 100 px na 100 px a reszta tego tła będzie niewidoczna. Mi chodzi o to aby uzyskać taki efekt aby w granicach tego diva 100 px na 100 px płynnie preszuwało się tło (czyli ten obrazek 200 px na 200 px) gdzie widoczna czesc wynosi 100 px na 100 px.
Go to the top of the page
+Quote Post
zegarek84
post
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(styryl @ 5.01.2010, 17:09:12 ) *
sprawa wygląda tak:

jest div o wymiarach 100 px na 100 px, jeżeli w css wstawimy mu tło jako obrazek o wielkości 200 px na 200 px to w divie będzie jedynie wycinek tego tła czyli 100 px na 100 px a reszta tego tła będzie niewidoczna. Mi chodzi o to aby uzyskać taki efekt aby w granicach tego diva 100 px na 100 px płynnie preszuwało się tło (czyli ten obrazek 200 px na 200 px) gdzie widoczna czesc wynosi 100 px na 100 px.

background-position
jak już napisałem niżej to nie kasuje ;p - idea jest taka sama plus link do wyników na google z wyświetloną własnością css
...
Cytat


wszystko ładnie pięknie, tyle, że obrazek w podanym przykładzie można tak wy pozycjonować w samym css by wyglądał jak tło i się sam skalował ;p

co do pierwszego postu też nie do końca rozumiem gdyż nie wiem, w jakim sensie ma się to tło ruszać - jeśli będzie jako standardowe tło to na pewno nie da się skalować ;p - a reszta, czyli ruch to zmiana parametrów css z poziomu js...

co do samej płynności to jeśli przesówa się o jeden piksel to tu nie ma co tłumaczyć - jeśli o więcej niż jeden (przelatujący przez ekran obiekt w ciągu sekundy - 1000 zminan na tą sekundę to życzę powodzenia ;p) to trzeba zrobić tak jak filmy są zrobione, czyli powyżej 20 zmian na sekundę - najlepiej 25 zmian pozycji w ciągu sekundy - oko zauważy "płynny" ruch (IMG:style_emoticons/default/winksmiley.jpg)

tu jeszcze pasowało by napomnieć o optymalizacji tego, gdyż w niektórych przeglądarkach może to się ciąć... i teraz tak, przy zmianie własności w DOM przeglądarka zmiany renderuje od razu - dla przykładu i lepszego tłumaczenia nie tło a obrazek przesówamy, dla uproszczenia oparte to o position absolute - jeśli animujemy wiele elementów - uprośćmy do jednego obrazka bo liczbami zarzucę - przez zmianę np. przez zmianę marginesów lewego i top:
gdzie $el w js ma już zapamiętaną rozwiniętą część do tyli czyli $el=obiekt.style;
$el.marginLeft=$x;
$el.marginTop=$y;

to jak najbardziej odlecam - zwłaszcza, jeśli na stronie chcecie uzyskać np. efekt sniegu (wiele płatków, wiele obiektów, wiele zmian)
i tu dla jednego obrazka w dom 2 razy zrobiliśmy zmianę do jednej zmiany pozycji - przeglądarka renderuje to 2 razy zamiast raz - teraz to przemnóżcie sobie razy wszystkie zmiany * liczba elementów * liczba "klatek" - zdecydowanie zbyt często się renderuje to w przeglądarce ;p....

o wiele lepiej jest to wszystko policzyć w pierw, elementy/obrazki mają jakieś wygenerowane na początku id - identyfikator... i teraz najlepiej zrobić coś w tym stylu:
każdy element ma odpowiednik w tablicy, przy obliczeniach w petli zbieramy dane:
for(...){$styl[$i]=['#obr',$i,'{margin-left:',$vars.wspolrzedne[$i].$x,';margin-top:',$vars.wspolrzedne[$i].$y,';}'].join('');/*tą linijke skopiowałem - może malo mówi ale widać, że tu jest kenerowany fragment css dla obrazka o id=obr[cośtam] */}

po pętli np.:
$styl=$styl.join('');
$vars.style.firstChild.nodeValue=$styl;

gdzie w tym przykładzie pod $vars.style jest zapamiętany obiekt z drzewa dom wcześniej utworzony:
$vars.style=document.createElement('style');
$vars.style.appendChild(document.createTextNode(''));
document.getElementsByTagName('head')[0].appendChild($vars.style);

co do powyższych przykładów jeszcze ktoś wspomnieć mógł np o:
$vars.$img[$i].setAttribute('style', 'no tu ustawiamy pozycjonowanie'); - ta metoda jest lepsza od:
$el.marginLeft=$x;
$el.marginTop=$y;
gdyż dla danego obrazka jest tylko raz zmiana i raz jest generowana strona, ale gorsza od opisanej powyżej jeśli tych obrazków trochu na stronie dosyć czesto animujemy...


sorki - wyszło takie małe rozważanie przy okazji lekko o ptymalności animacji i płynności - powyższe jeśli to sa obrazki możesz też dynamicznie skalować, tło możesz przemieszczać, jednak nie możesz skalować - napisałem o wszystkim i o niczym bo pytania nie sprecyzowałeś ;p

Ten post edytował zegarek84 5.01.2010, 17:23:06
Go to the top of the page
+Quote Post
styryl
post
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

Ostrzeżenie: (0%)
-----


Może napisałeś o wszystkim i o niczym ale idea jest zrozumiała, myśle że teraz dam sobie rade, sprawdze jak to wygląda z wydajnością.

Dziękuje serdecznie plusik dla Ciebie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 03:52